3.3 Applying SQP Algorithm
Parameter estimation is carried out in the Matlab environment by using the built-in quadratic
programming solver, quadprog. The algorithm is described below:
(Bonnans et al., 2006, 257)
- Set up initial value of $\left( \boldsymbol{{\gamma}_{0}},\boldsymbol{{\lambda}_{0}} \right)$, and compute
${{c}_{I}}\left( \boldsymbol{{\gamma}_{0}} \right)$, $\nabla f{\left( \boldsymbol{{\gamma}_{0}} \right)}$, and
${{A}_{I}}\left( \boldsymbol{{\gamma}_{0}}\right)$. Set the iteration index $k=0$.
- Stop and report $\left( \boldsymbol{{\gamma}_{k}},\boldsymbol{{\lambda }^{QP}} \right)$ as the optimal
solution if the KKT conditions (3.2) are
satisfied.
- Solve the QP problem (3.4) by computing
the Hessian matrix of the Lagrangian $L\left( \boldsymbol{{\gamma }_{k}},\boldsymbol{{\lambda }_{k}} \right)$
and derive $d_{k}$ with Matlab function quadprog.
- Solve the Lagrange multiplier $\boldsymbol{{\lambda }^{QP}}$ by the first equation in
(3.3), $\boldsymbol{{\lambda }^{QP}}={{\left(
{\boldsymbol{{A}_{k}}}^{T} \right)}^{-1}}\left( -\nabla \boldsymbol{{f}_{k}}-\boldsymbol{{{L}_{k}}d} \right)$.
- Set the new solution of the $k+1$ iteration as $\boldsymbol{{\gamma }_{k+1}}=\boldsymbol{{\gamma }_{k}}
+\boldsymbol{{d}_{k}}$ and $\boldsymbol{{\lambda }_{k+1}}=\boldsymbol{{\lambda }^{QP}}$.
- Compute ${{c}_{I}}\left( \boldsymbol{{\gamma}_{k+1}} \right)$, $\nabla f{\left( \boldsymbol{{\gamma}_{k+1}}
\right)}$, and ${{A}_{I}}\left( \boldsymbol{{\gamma}_{k+1}}\right)$. Go back to the step 2 and set $k=k+1$.
We can directly compute the gradient vector $\nabla f{\left( \boldsymbol{\gamma} \right)}$ and the Lagrangian
Hessian matrix $L\left( \boldsymbol{{\gamma }_{k}},\boldsymbol{{\lambda }_{k}} \right)$. The initial value is
set to the parameter estimates of the truncated regression model without boundary constraints by the Stata
truncreg command.11 (Cong, 2000)
____________________
Footnote
11 Regarding numerical issues and technical model information,
please consult with the supplementary materials.